iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

用LeetCode來訓練大腦的邏輯思維系列 第 3

LeetCode 7. Reverse Integer

  • 分享至 

  • xImage
  •  

題目

Given a 32-bit signed integer, reverse digits of an integer.

題意

反轉數值,反轉後的範圍介於[-2147483648 to 2147483647]之間,負數反轉後還是負數,若溢位的話,回傳0。

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 12

解題步驟

這題的重點在於,若遇到以下情況該如何處理:

  • 反轉後溢位
  • 負號
  • 反轉後最高位數為0

先設定邊界值:

let maxValue = Math.pow(2, 31) - 1;

將參數x,取絕對值,轉陣列反轉後,再組字串轉數值,轉數值的過程中解決最高位數為0的問題:

let v = +Array.from('' + Math.abs(x)).reverse().join('');

判斷原參數是否為負數:

let v2 = x < 0 ? v * - 1 : v;

判斷是否溢位:

let v3 = (-1 * maxValue - 1 <= v && v <= maxValue) ? v2 : 0;

Solution

var reverse = function(x) {
  let maxValue = Math.pow(2, 31) - 1;
  let v = +Array.from('' + Math.abs(x)).reverse().join('');
  let v2 = x < 0 ? v * - 1 : v;
  let v3 = (-1 * maxValue - 1 <= v && v <= maxValue) ? v2 : 0;
  return v3;
};

上一篇
LeetCode 12. Integer to Roman
下一篇
LeetCode 13. Roman to Integer
系列文
用LeetCode來訓練大腦的邏輯思維30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言